(display "\n========================================\n")
(define (accumulate op initial sequence)
    (if (null? sequence)
        initial
        (op (car sequence)
            (accumulate op initial (cdr sequence)))))

(define (horner-eval x coefficient-seq)
    (accumulate (lambda (this-coeff higher-terms)
                        (+ this-coeff (* x higher-terms)))
                0
                coefficient-seq))

(display (horner-eval 2 (list 1 3 0 5 0 1)))
(display "\n========================================\n")
